module.exports = {
  // 获取文章分类
  getArticleCates: (req, res) => {
    const db = require('../db/index')
    const sql = 'select * from ev_article_cate where is_delete=0 order by id asc'
    // 通过is_delete字段查找文章分类
    db.query(sql, (err, result) => {
      if (err) {
        return res.cc(1, err)
      }
      res.send({
        status: 0,
        message: '获取文章分类成功',
        data: result
      })
    })
  },
  // 新增文章分类
  addArticleCates: (req, res) => {
    const db = require('../db/index')

    const info = req.body
    if (!info.name || !info.alias) {
      return res.cc(1, '名字或别名不能为空')
    }
    const sql = 'select * from ev_article_cate where name=? or alias=?'
    // 查询看文章名称和分类别名有没有重复
    db.query(sql, [info.name, info.alias], (err, result) => {
      if (err) {
        return res.cc(1, err)
      }
      if (result.length === 2) {
        return res.cc(1, '分类名称和分类别名都被占用')
      }
      if (result.length === 1 && result[0].name === info.name && result[0].alias === info.alias) {
        return res.cc(1, '分类名称和分类别名都被占用')
      }
      if (result.length === 1 && result[0].name === info.name) {
        return res.cc(1, '分类名称被占用')
      }
      if (result.length === 1 && result[0].alias === info.alias) {
        return res.cc(1, '分类别名被占用')
      }
      const sql = 'select count(*) as count from ev_article_cate'
      // 通过查询mysql的count(*)来设置新数据的id
      db.query(sql, (err, result) => {
        if (err) {
          return res.cc(1, err)
        }
        const sql = 'insert into ev_article_cate (id,name,alias) values(?,?,?)'
        db.query(sql, [result[0].count + 1, info.name, info.alias], (err, result) => {
          if (err) {
            return res.cc(1, err)
          }
          if (result.affectedRows !== 1) {
            return res.cc(1, '新增文章名称失败,请稍后重试')
          }
          res.cc(0, '插入成功')
        })
      })
    })
  },
  // 删除文章分类
  deleteCateById: (req, res) => {
    const db = require('../db/index')

    const id = req.params.id
    if (id.indexOf('.') !== -1) {
      return res.cc(1, 'id不能为小数')
    }
    const sql = 'delete from ev_article_cate where id=?'
    // 通过动态id来删除文章分类
    // 通过id删除文章分类
    db.query(sql, [id], (err, result) => {
      if (err) {
        return res.cc(1, err)
      }
      if (result.affectedRows !== 1) {
        return res.cc(1, '删除失败,请稍后重试')
      }
      res.cc(0, '删除成功')
    })
  },
  // 根据id获取文章分类
  getArtCateById: (req, res) => {
    const db = require('../db/index')

    const id = req.params.id
    if (id.indexOf('.') !== -1) {
      return res.cc(1, 'id不能为小数')
    }
    const sql = 'select id,name,alias from ev_article_cate where id=?'
    // 通过id获取文章分类
    db.query(sql, [id], (err, result) => {
      if (err) {
        return res.cc(1, err)
      }
      if (result.length !== 1) {
        return res.cc(1, '没有这种文章分类')
      }
      res.send({
        status: 0,
        data: result[0]
      })
    })
  },
  //通过id更新文章分类和分类别名
  updateCateById: (req, res) => {
    const db = require('../db/index')

    const info = req.body
    const sql = 'select * from ev_article_cate where name=? or alias=?'
    // 查找分类名称和分类别名有没有被占用
    db.query(sql, [info.name, info.alias], (err, result) => {
      if (err) {
        return res.cc(1, err)
      }
      if (!info.name || !info.alias) {
        return res.cc(1, '分类名称或分类别名不能为空')
      }
      if (result.length === 2) {
        return res.cc(1, '分类名称和分类别名都被占用')
      }
      if (result.length === 1 && result[0].name === info.name && result[0].alias === info.alias) {
        return res.cc(1, '分类名称和分类别名都被占用')
      }
      if (result.length === 1 && result[0].name === info.name) {
        return res.cc(1, '分类名称被占用')
      }
      if (result.length === 1 && result[0].alias === info.alias) {
        return res.cc(1, '分类别名被占用')
      }
      const id = req.params.id
      const sql = 'update ev_article_cate set ? where id=?'
      // 通过id更新分类名称和分类别名
      db.query(sql, [info, id], (err, result) => {
        if (err) {
          return res.cc(1, err)
        }
        if (result.affectedRows !== 1) {
          return res.cc(1, '更新失败,请稍后重试')
        }
        res.cc(0, '更新成功')
      })
    })
  }
}